package com.pattern.proxy.v4;

import java.util.Random;

/**
 * 问题： 我想记录坦克移动时间
 * 最简单的方式： 修改源代码 记录时间
 * 问题2： 如果无法修改源代码呢？
 * 使用继承方式也可行; 但是并不是比较好的方式（慎用继承）
 * 为何呢： 如果现在需求变了  添加日志记录、权限记录  “难道添加Tank3 、Tank4 ????” --- 所以不合适
 * 无法实现代理的各种组合
 */
public class Tank implements Movable {

    @Override
    public void move() {
        try {
            Thread.sleep(new Random().nextInt(10000));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new com.pattern.proxy.v2.Tank().move();
    }
}

class Tank2 extends Tank {
    @Override
    public void move() {
        Long start = System.currentTimeMillis();
        super.move();
        Long end = System.currentTimeMillis();
        System.out.println("运行时间： " + (end -start));
    }

    public static void main(String[] args) {
        new Tank2().move();
    }
}

interface Movable {
    void move();
}
